package encryption

import (
	"crypto/md5"
	"golang.org/x/crypto/bcrypt"
)

type user struct {
	salt string
}

func (u *user) SetSalt(salt string) {

}

func (u *user) Encoder(password string) (string, error) {
	bytes, err := bcrypt.GenerateFromPassword(u.md5(password), bcrypt.DefaultCost)
	if err != nil {
		return "", err
	}

	return string(bytes), nil
}

// Verify , 密码验证
// 参数：
//	password： 用户原始密码
//	hash：用户加密后密码
// 返回值：
//	布尔值
func (u *user) Verify(password, hash string) bool {
	return nil == bcrypt.CompareHashAndPassword([]byte(hash), u.md5(password))
}

func (u *user) md5(password string) []byte {
	md := md5.New()
	md.Write([]byte(password))
	return md.Sum(nil)
}
